<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>
<body>
  <script>
    // symbol: 每次产生都是一个唯一的值
    // 用途: 用于给对象指定一个唯一的属性
    // 对象的属性名: string/symbol    string类型的属性名属性不能保证唯一性
    /* const s1 = Symbol('age')
    const s2 = Symbol('age')
    console.log(s1, s2, s1===s2, typeof s1)  // 'symbol'

    let a1 = 'age'
    let a2 = 'age'
    const obj = {}
    obj[a1] = 23
    obj[a2] = 24
    obj[s1] = 34
    obj[s2] = 36
    console.log(obj)
    obj[s1] = 35 */


    // bigint 
    /* 
    问题: number类型存储的整数是有最大限制, 一旦大于这个值, 不正确了
    如果应用中需要存储一个较大的整数, 用number类型存储不合适, 可以用bigint

    BigInt(number值) / number值n
    */


    let n1 = Number.MAX_SAFE_INTEGER
    let n2 = n1 + 2
    console.log(n1, n2, n2-n1)

    let n3 = BigInt(n1)
    // let n4 = n3 + 2  //  bigint不能与number计算
    let n4 = n3 + 2n
    console.log(n3, n4, n4-n3)

    /* 
    
    1. 基本数据类型
      ● number
      ● string
      ● boolean
      ● undefined
      ● null
      ● symbol 常用于对象上添加唯一属性
      ● bigint 主要用于管理很大或很小的数据（超过 Number.MAX_SAFE_INTEGER 或小于 Number.MIN_SAFE_INTEGER）
    2. 引用/对象数据类型
      ● object
      ● array
      ● function
    */
  </script>
</body>
</html>